﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Data_Access_Layer;
using System.Text.RegularExpressions;

namespace Business_Layer
{
    public class ArticleController
    {
        /// <summary>
        /// Chuỗi lưu lỗi
        /// </summary>
        public string _err = "";


        /// <summary>
        /// Lấy danh sách hàng hóa
        /// </summary>
        /// <returns>Danh sách hàng hóa</returns>
        public List<Article> GetAll()
        {
            //Load lên những hàng hóa chưa bị xóa == thuộc tính deleted=false
            return Article.Objects.Where(x => x.Deleted == false).ToList();
        }


        /// <summary>
        /// Hàm xử lý thêm mới hoặc cập nhật hàng hóa
        /// </summary>
        /// <param name="art">Nhà hàng hóa</param>
        public bool InsertOrUpdate(Article art)
        {
            _err = "";
            try
            {
                //Nếu Id > 0 nghĩa là đang cập nhật
                if (art.Id > 0)
                    Article.Objects.Update(art);
                else
                {
                    //Ngược lại == 0 là thêm mới
                    Article.Objects.Insert(art);
                }
                return true;

            }
            catch (Exception ex)
            {
                _err = ex.Message;
            }
            return false;
        }

        /// <summary>
        /// Xóa hàng hóa
        /// </summary>
        /// <param name="sup">Hàng hóa</param>
        public void Delete(Article art)
        {
            _err = "";
            try
            {
                Article.Objects.Update(art);
            }
            catch (Exception ex)
            {
                _err = ex.Message;
            }
        }


        /// <summary>
        /// Tìm kiếm hàng hóa theo mã
        /// </summary>
        /// <param name="id">Mã hàng hóa nhập vào</param>
        /// <returns>Danh sách hàng hóa</returns>
        public List<Article> FindById(int id)
        {
            return Article.Objects.Where(x => x.Id.ToString().IndexOf(id.ToString()) != -1 && x.Deleted == false).ToList();
        }


        /// <summary>
        /// Tìm kiếm hàng hóa theo tên
        /// </summary>
        /// <param name="id">Tên hàng hóa nhập vào</param>
        /// <returns>Danh sách hàng hóa</returns>
        public List<Article> FindByName(string name)
        {
            return Article.Objects.Where(x => x.ArtName.IndexOf(name) != -1 && x.Deleted == false).ToList();
        }

        /// <summary>
        /// Tìm kiếm hàng hóa theo hà cung cấp
        /// </summary>
        /// <param name="id">Tên nhà cung cấp</param>
        /// <returns>Danh sách hàng hóa</returns>
        public List<Article> FindBySupplier(int supid)
        {
            return Article.Objects.Where(x => x.SupId ==supid && x.Deleted == false).ToList();
        }
    }
}
